package com.mdhw.mili.service;

import com.mdhw.common.base.MiliPageData;
import com.mdhw.common.base.PageData;
import com.mdhw.config.R;
import com.mdhw.guanlin.vo.GuanUserVo;
import com.mdhw.guanlin.vo.GuanlinMiliLoginVo;
import com.mdhw.mili.vo.area.CityVo;
import com.mdhw.mili.vo.area.ParksVo;
import com.mdhw.mili.vo.area.VisitorVo;
import com.mdhw.mili.vo.system.DictDataVo;
import com.mdhw.mili.vo.system.FaceCheckVo;
import com.mdhw.mili.vo.system.ReturnVo;
import com.mdhw.mili.vo.user.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;

public interface MiliService {

    public R<GuanUserVo> tokenSocial(GuanlinMiliLoginVo guanlinMiliLoginVo);


    public R<MiliPageData<VisitorVo>> selectAllVisitorPage(Integer current, Integer size, String name, String provinceCode, String cityCode,
                                                           String countyCode, String streetCode, Long userId, String type, String cityName, String miliToken);

    public R<FangkeVo> selectFangkeByMobile(String fangkeMobile, String miliToken, String projectId);


    public List<CityVo> selectCityList(String name, String provinceCode, String cityCode, String streetCode, String cityName, String miliToken, String projectId);


    public R<List<YezhuVo>> selectYezhuVo(String name, String miliToken, String projectId);

    public List<ParksVo> selectParksList(String miliToken, String projectId);


    public R<List<DictDataVo>> selectDictDataList(String dictType, String miliToken);


    /**
     * 通过手机号查询访客的通行信息
     *
     * @param phone        手机
     * @param serialNumber 支付宝设备序列号
     * @return
     */
    public R<CheckPassRightVo> selectVisitorCheckPassRight(String phone, String serialNumber, String miliToken);

    // public ReturnVo visitoraddVisitorByPhone(String phone,String miliToken,String projectId);


    // 访客申请
    public R registerByVisitor(FangkeRegisterVo fangkeRegisterVo, String miliToken, String projectId);


    public R<FaceCheckVo> faceUploadAndCheck(MultipartFile file, String miliToken, String projectId);

    public R<MiliPageData<FangkeLogVo>> selectFangkeLogPage(Integer current, Integer size, String name, String miliToken);

    // 获取人脸协议
    public R getAuthorizedFaceFk(String phone,String miliToken,String projectId);

    public R<FangkeNotificationVo> visitorNotification(String miliToken,String projectId) ;

    /**
     * 首页访客记录
     * @param current
     * @param size
     * @param name
     * @param date
     * @param status
     * @param miliToken
     * @return
     */
    public R<List< IndexFangkeLogVo>> selectIndexFangkeLogPage(Integer current, Integer size, String name,String date,String status,String miliToken);

    public R<FangkeQrCodeVo> getFangkeQrCode(String visitId,String miliToken,String projectId);

    public R<FaceCheckVo> faceUploadAndCheckByBase64(String miliToken, String imageBase64, String projectId);
    public R<List<VisitorReasonVo>> selectVisitorLabel(String miliToken,String projectId);
}
